
package com.beerq.view.dialog;

import android.app.Dialog;
import android.content.Context;
import android.graphics.drawable.AnimationDrawable;
import android.view.Gravity;
import android.view.WindowManager;
import android.widget.ImageView;
import android.widget.LinearLayout;

import com.beerq.R;
import com.beerq.util.AppConfig;


public class LoadingDialog extends Dialog {



    private boolean isCancelable=false;

    public LoadingDialog(Context context) {
        super(context, R.style.beerq_dialog_no_dim);
        setCustomView(context);
    }

    public LoadingDialog(Context context, boolean isCancelable) {
        super(context, R.style.beerq_dialog_no_dim);
        this.isCancelable=isCancelable;
        setCustomView(context);
    }

    public void setCustomView(Context context) {

        ImageView imageView=new ImageView(context);



//        View customView = LayoutInflater.from(getContext()).inflate(R.layout.beerq_progress_dialog, null);
//        mContentsText = (TextView) customView.findViewById(R.id.t_dialog_content);
//        mProgressIV = (ImageView) customView.findViewById(R.id.i_progress);
        imageView.setImageResource(R.drawable.dialog_loading);
        getWindow().setBackgroundDrawableResource(android.R.color.transparent);
        final AnimationDrawable playDrawable = (AnimationDrawable) imageView.getDrawable();
        imageView.post(new Runnable() {
            @Override
            public void run() {
                playDrawable.start();
            }
        });
        
        
        
        
        WindowManager.LayoutParams lp = getWindow().getAttributes();
        getWindow().setGravity(Gravity.CENTER);

        /*
         * lp.x与lp.y表示相对于原始位置的偏移.
         * 当参数值包含Gravity.LEFT时,对话框出现在左边,所以lp.x就表示相对左边的偏移,负值忽略.
         * 当参数值包含Gravity.RIGHT时,对话框出现在右边,所以lp.x就表示相对右边的偏移,负值忽略.
         * 当参数值包含Gravity.TOP时,对话框出现在上边,所以lp.y就表示相对上边的偏移,负值忽略.
         * 当参数值包含Gravity.BOTTOM时,对话框出现在下边,所以lp.y就表示相对下边的偏移,负值忽略.
         * 当参数值包含Gravity.CENTER_HORIZONTAL时
         * ,对话框水平居中,所以lp.x就表示在水平居中的位置移动lp.x像素,正值向右移动,负值向左移动.
         * 当参数值包含Gravity.CENTER_VERTICAL时
         * ,对话框垂直居中,所以lp.y就表示在垂直居中的位置移动lp.y像素,正值向右移动,负值向左移动.
         * gravity的默认值为Gravity.CENTER,即Gravity.CENTER_HORIZONTAL |
         * Gravity.CENTER_VERTICAL.
         * 
         * 本来setGravity的参数值为Gravity.LEFT | Gravity.TOP时对话框应出现在程序的左上角,但在
         * 我手机上测试时发现距左边与上边都有一小段距离,而且垂直坐标把程序标题栏也计算在内了,
         * Gravity.LEFT, Gravity.TOP, Gravity.BOTTOM与Gravity.RIGHT都是如此,据边界有一小段距离
         */
//        lp.x = 100; // 新位置X坐标
//        lp.y = 100; // 新位置Y坐标


        imageView.setLayoutParams(new  LinearLayout.LayoutParams(60* AppConfig.deviceDensity,110*AppConfig.deviceDensity));
        lp.width = 120*AppConfig.deviceDensity; // 宽度
        lp.height = 150*AppConfig.deviceDensity; // 高度
        //lp.alpha = 0.7f; // 透明度

        // 当Window的Attributes改变时系统会调用此函数,可以直接调用以应用上面对窗口参数的更改,也可以用setAttributes
        // dialog.onWindowAttributesChanged(lp);
        getWindow().setAttributes(lp);

//        Window dialogWindow = dialog.getWindow();
//        WindowManager.LayoutParams lp = dialogWindow.getAttributes();
        
        setCancelable(isCancelable);
        setCanceledOnTouchOutside(false);
        super.setContentView(imageView);
    }
    


    public LoadingDialog setDismissOnTouchOutside(boolean cancel) {
        setCanceledOnTouchOutside(cancel);
        setCancelable(cancel);
        return this;
    }

}
